#include "./stir_motor.h"
#include "../device/gpio.h"

namespace driver {

using namespace device::gpio;

using STIR = PB<11>;

StirMotor::StirMotor() {
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;

    config_pp_out<STIR>();
}

void StirMotor::open() {
    AUTO_LOCK(m_mutex);
    if (m_open_count == 0) {
        STIR::set();
    }
    m_open_count ++;
}

void StirMotor::close_once() {
    AUTO_LOCK(m_mutex);
    if (m_open_count == 0) {
        return;
    }
    m_open_count --;
    if (m_open_count == 0) {
        STIR::clr();
    }
}

}
